প্রোগ্রামিং ভাষায়, প্যারামিটার পাসিং হল প্রোগ্রামের ফাংশন বা প্রক্রিয়াতে আর্গুমেন্ট বা ইনপুট প্যারামিটারগুলি প্রেরণের প্রক্রিয়া। সাধারণত দুটি প্রধান পদ্ধতিতে প্যারামিটার পাস করা হয়: By Value এবং By Reference। এই দুই ধরনের প্যারামিটার পাসিংয়ের মধ্যে মূল পার্থক্য হল যে, ফাংশনে প্যারামিটার পাস করার সময় আসল ডাটা পরিবর্তন হবে কিনা।
১. By Value
By Value পদ্ধতিতে, ফাংশনে প্যারামিটার পাস করার সময় মূল মানের একটি কপি পাস করা হয়। এর মানে হল যে, ফাংশনটির ভিতরে প্যারামিটার পরিবর্তন হলেও মূল মানে কোন পরিবর্তন আসবে না।
উদাহরণ: By Value প্যারামিটার পাসিং
program ByValueExample;
procedure ChangeValue(num: Integer);
begin
num := num + 10; { ফাংশনে প্যারামিটার পরিবর্তন হবে }
writeln('Inside procedure: ', num);
end;
var
x: Integer;
begin
x := 5;
writeln('Before procedure: ', x);
ChangeValue(x); { x এর কপি পাস করা হচ্ছে }
writeln('After procedure: ', x); { মূল x এর মান অপরিবর্তিত থাকবে }
end.আউটপুট:
Before procedure: 5
Inside procedure: 15
After procedure: 5এখানে, ফাংশন ChangeValue-এ প্যারামিটার num পরিবর্তন করা হয়েছে, কিন্তু মূল মান x অপরিবর্তিত আছে। কারণ প্যারামিটারটি কেবলমাত্র মানের একটি কপি পেয়েছে, আসল মানটি নয়।
২. By Reference
By Reference পদ্ধতিতে, ফাংশনে প্যারামিটার পাস করার সময় আসল ডাটার রেফারেন্স পাস করা হয়, অর্থাৎ মূল মানের ঠিকানা ফাংশনে প্রেরিত হয়। এর ফলে, ফাংশনটির ভিতরে প্যারামিটার পরিবর্তন হলে মূল মানেও পরিবর্তন আসবে।
উদাহরণ: By Reference প্যারামিটার পাসিং
program ByReferenceExample;
procedure ChangeValue(var num: Integer);
begin
num := num + 10; { ফাংশনে প্যারামিটার পরিবর্তন হবে এবং মূল মানও পরিবর্তিত হবে }
writeln('Inside procedure: ', num);
end;
var
x: Integer;
begin
x := 5;
writeln('Before procedure: ', x);
ChangeValue(x); { x এর রেফারেন্স পাস করা হচ্ছে }
writeln('After procedure: ', x); { মূল x এর মান পরিবর্তিত হবে }
end.আউটপুট:
Before procedure: 5
Inside procedure: 15
After procedure: 15এখানে, ফাংশন ChangeValue-এ প্যারামিটার num পরিবর্তন করা হয়েছে, এবং যেহেতু প্যারামিটারটি মূল মানের রেফারেন্স পেয়েছে, ফলে মূল মান x-এর মানও পরিবর্তিত হয়েছে।
মূল পার্থক্য
| বৈশিষ্ট্য | By Value | By Reference |
|---|---|---|
| কী পাস করা হয়? | প্যারামিটারটির মানের একটি কপি। | প্যারামিটারটির আসল রেফারেন্স (ঠিকানা)। |
| ফাংশনে পরিবর্তন | ফাংশনের ভিতরে প্যারামিটার পরিবর্তিত হলেও মূল মান অপরিবর্তিত থাকে। | ফাংশনের ভিতরে প্যারামিটার পরিবর্তন হলে মূল মানও পরিবর্তিত হয়। |
| উদাহরণ | ChangeValue(x); (এখানে x-এর কপি পাস হয়) | ChangeValue(x); (এখানে x-এর রেফারেন্স পাস হয়) |
| পারফরমেন্স | সাধারণত ধীর, কারণ কপি তৈরি করতে হয়। | দ্রুত, কারণ কেবল রেফারেন্স পাস হয়। |
সারাংশ
- By Value পদ্ধতিতে, ফাংশনকে একটি কপি পাস করা হয়, যার ফলে ফাংশনের ভিতরে প্যারামিটার পরিবর্তন হলেও মূল মান অপরিবর্তিত থাকে।
- By Reference পদ্ধতিতে, ফাংশনে প্যারামিটারটির আসল রেফারেন্স পাস করা হয়, যার ফলে ফাংশনের ভিতরে প্যারামিটার পরিবর্তন হলে মূল মানও পরিবর্তিত হয়।
প্রোগ্রামিংয়ের ক্ষেত্রে, যদি আপনি চান যে ফাংশনে কোনো পরিবর্তন আসলে সেটি মূল মানে প্রভাব ফেলুক, তবে আপনি By Reference পদ্ধতি ব্যবহার করবেন। অন্যথায়, By Value পদ্ধতি ব্যবহার করা যেতে পারে।
Read more